home *** CD-ROM | disk | FTP | other *** search
/ Mac Power 1997 December / MACPOWER-1997-12.ISO.7z / MACPOWER-1997-12.ISO / AMUG / PROGRAMMING / Raven 1.2.sit / Raven 1.2 / Source / Foundation / Broadcaster / ZStateBroadcaster.h < prev    next >
Text File  |  1997-08-29  |  3KB  |  94 lines

  1. /*
  2.  *  File:       ZStateBroadcaster.h
  3.  *  Summary:       Singleton used to broadcast state changes.
  4.  *  Written by: Jesse Jones
  5.  *
  6.  *  Copyright ゥ 1996-1997 Jesse Jones. 
  7.  *    For conditions of distribution and use, see copyright notice in ZTypes.h  
  8.  *
  9.  *  Change History (most recent first):    
  10.  *
  11.  *         <2>     8/29/97    JDJ        Added kActivatingWindow and kDeactivatingWindow.
  12.  *         <1>     6/15/96    JDJ        Created
  13.  */
  14.  
  15. #pragma once
  16.  
  17. #include <ZBroadcaster.h>
  18.  
  19.  
  20. //-----------------------------------
  21. //    Constants
  22. //
  23. const long kTargetChanged         = 'TRGC';        // a new MCommander target has been switched in, data has the new MCommander pointer
  24.  
  25. const long kStartingApp           = 'StAp';
  26. const long kQuittingApp           = 'QtAp';
  27. const long kSuspendingApp         = 'SpAp';
  28. const long kResumingApp           = 'RsAp';
  29.  
  30. const long kOpeningWindow          = 'OpWn';        // data will have the TWindow pointer            
  31. const long kClosingWindow          = 'ClWn';            
  32. const long kShowingWindow          = 'ShWn';
  33. const long kHidingWindow          = 'HdWn';
  34. const long kActivatingWindow      = 'AcWn';
  35. const long kDeactivatingWindow    = 'DcWn';
  36. const long kRenamingWindow        = 'RnWn';
  37.  
  38.  
  39. // ===================================================================================
  40. //    struct SStateMessage
  41. // ===================================================================================
  42. struct SStateMessage {
  43.     long        mesg;
  44.     const void*    data;                        
  45.     
  46.     SStateMessage(long message, const void* info = nil)    {mesg = message; data = info;}
  47. };
  48.  
  49.  
  50. // ===================================================================================
  51. //    class TStateBroadcaster
  52. // ===================================================================================
  53. class TStateBroadcaster : public MBroadcaster<SStateMessage> {
  54.  
  55.     typedef MBroadcaster<SStateMessage> Inherited;
  56.  
  57. //-----------------------------------
  58. //    Initialization/Destruction
  59. //
  60. public:
  61.     static TStateBroadcaster*    Instance();
  62.     
  63. protected:
  64.     virtual                        ~TStateBroadcaster();
  65.  
  66.                                 TStateBroadcaster();
  67.  
  68. private:
  69.                                 TStateBroadcaster(const TStateBroadcaster& rhs);
  70.     
  71.             TStateBroadcaster&    operator=(const TStateBroadcaster& rhs);
  72.  
  73. //-----------------------------------
  74. //    Inherited API
  75. //
  76. public:
  77.     virtual void                 Broadcast(const SStateMessage& message) const;
  78.     
  79.             void                 Broadcast(long mesg, const void* data) const        {this->Broadcast(SStateMessage(mesg, data));}
  80.  
  81. //-----------------------------------
  82. //    New API
  83. //
  84. protected:
  85. #if DEBUG
  86.     virtual void                TraceMessage(const SStateMessage& message) const;
  87. #endif
  88.  
  89. //-----------------------------------
  90. //    Member data
  91. //
  92. protected:
  93.     static TStateBroadcaster*    msInstance;
  94. };